/**************************************************************************
 *  创建者：        hualei
 *  开始时间：   2018.06.23
 *  copyright:  (C) 深圳市华友高科有限公司
 *  修改说明：  (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 *
 ***************************************************************************
 *   TCP_WRITE TCP发送指令属性编辑视窗类
 *
 ***************************************************************************/
#ifndef TCPWRITEINSTRUCTIONVIEW_H
#define TCPWRITEINSTRUCTIONVIEW_H

#include <QWidget>
#include "tcpwriteinstructionview_global.h"
#include <QObject>
#include <QTranslator>
#include "instructionEnum.h"

class ProgramView;

namespace Ui {
class TCPWriteInstructionView;
}

///**
// * @brief The EM_TCP_WRITE_TYPE enum        发送数据类型
// */
//enum EM_TCP_WRITE_DATA_TYPE
//{
//    E_TCP_WRITE_TYPE_REGISTER,      // 寄存器数据
//    E_TCP_WRITE_TYPE_CONST          // 常量
//};

///**
// * @brief The EM_TCP_WRITE_BUS_TYPE enum    发送总线类型
// */
//enum EM_TCP_WRITE_BUS_TYPE
//{
//    E_TCP_WRITE_BUS_CLIENT,         // 客户端
//    E_TCP_WRITE_BUS_SERVER          // 服务器端
//};

/**
 * @brief The TCPWriteInstructionView class     TCP_WRITE TCP发送指令属性编辑视窗类
 */
class TCPWRITEINSTRUCTIONVIEWSHARE_EXPORT TCPWriteInstructionView : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief TCPWriteInstructionView       构造函数
     * @param parent
     */
    explicit TCPWriteInstructionView(int styleId,QWidget *parent = 0);

    /**
     * @brief getInput              获取指令属性编辑界面输入数据
     */
    void getInput();

    /**
     * @brief updateView            将数据在指令属性编辑界面更新显示
     */
    void updateView();

    /**
     * @brief changeLanguage        更改语言
     * @param language              语言编号
     */
    void changeLanguage(int language);

    void initialDisplayStyle(int styleId);

public slots:

    /**
     * @brief on_clearNote_Btn_clicked          点击清除按钮响应槽函数
     */
    void on_clearNote_Btn_clicked();

    /**
     * @brief on_forward_Btn_clicked            点击上一页按钮响应槽函数
     */
    void on_forward_Btn_clicked();

    /**
     * @brief on_save_Btn_clicked               点击保存按钮响应槽函数
     */
    void on_save_Btn_clicked();

    /**
     * @brief on_WriteType_Reg_radioButton_clicked      选择发送寄存器数据响应槽函数
     */
    void on_WriteType_Reg_radioButton_clicked();

    /**
     * @brief on_WriteType_Const_radioButton_clicked    选择发送常量数据响应槽函数
     */
    void on_WriteType_Const_radioButton_clicked();

signals:

    /**
     * @brief finishEditInstructionSignal               指令属性编辑完成信号
     */
    void finishEditInstructionSignal();

    /**
     * @brief cleanNoteSignal                           清除注释信号
     */
    void cleanNoteSignal();

    /**
     * @brief saveInstructionSignal                     保存指令信号
     * @param instructionStr                            编辑完成的指令字符串
     */
    void saveInstructionSignal(QString instructionStr);

public:

    /**
     * @brief programView               指令程序编辑主视图对象
     */
    ProgramView *programView;

    /**
     * @brief instructionOut            指令字符串
     */
    QString instructionOut;

    /**
     * @brief tcpWriteType              发送数据类型
     */
    EM_TCP_WRITE_TYPE tcpWriteType;

    /**
     * @brief tcpWriteConstValue        要发送的常量数据
     */
    QString tcpWriteConstValue;

    /**
     * @brief tcpWriteRegBegAddress     要发送的寄存器数据的寄存器起始地址
     */
    int tcpWriteRegBegAddress;

    /**
     * @brief regLengthValue            寄存器长度
     */
    int regLengthValue;

    /**
     * @brief tcpWriteIPVec             接收数据客户端端IP
     */
    QVector < int > tcpWriteClientIPVec;

    /**
     * @brief tcpWriteServerIPVec       接收数据服务器端IP
     */
    QVector < int > tcpWriteServerIPVec;

    /**
     * @brief tcpWritePort              端口号
     */
    int tcpWritePort;

    /**
     * @brief jmpLBValue                跳转标签号
     */
    int jmpLBValue;

    /**
     * @brief noteStr                   注释
     */
    QString noteStr;

    /**
     * @brief tcpWriteBusType           总线类型
     */
    EM_TCP_WRITE_BUS_TYPE tcpWriteBusType;

private slots:

    /**
     * @brief on_SERVER_radioButton_clicked         选择SERVER总线类型响应槽函数
     */
    void on_SERVER_radioButton_clicked();

    /**
     * @brief on_CLIENT_radioButton_clicked         选择CLIENT总线类型响应槽函数
     */
    void on_CLIENT_radioButton_clicked();

private:
    Ui::TCPWriteInstructionView *ui;

    /**
     * @brief translator                翻译
     */
    QTranslator translator;

    int ip1,ip2,ip3,ip4;
};

#endif // TCPWRITEINSTRUCTIONVIEW_H
